package core

import (
	"context"
	"flow-calc/common"
)

/**
 *    Description: 管理Function和Router映射关系类型
 *    Date: 2024/3/28
 */

// FaaS 函数即服务
type FaaS func(context.Context, Flow) error

// FaaSBody FaaS自定义函数结构体
type FaaSBody struct {
	FuncName string
	Func     FaaS
}

// funcRouter 函数路由
// key:   函数名称
// value: 回调的自定义业务
type funcRouter map[string]FaaS

// flowRouter flow流程路由
// key:   flow流程名称
// value: Flow流
type flowRouter map[string]Flow

// Connector Init 相关操作

// ConnInit 第三方挂载存储初始化操作
type ConnInit func(conn Connector) error

// connInitRouter 初始化的Connector映射路由, key: Connector名称,value: Connector初始化操作
type connInitRouter map[string]ConnInit

// Connector Call回调相关操作

// CaaS Connector 的存储读取业务实现
type CaaS func(context.Context, Connector, Function, Flow, interface{}) error

// connFuncRouter 通过Function名称获取CaaS映射路由
// key:   Function名称
// value: CaaS(connector 的存储读取业务实现)
type connFuncRouter map[string]CaaS

// connSL 通过funMod进行分组管理connector
// key:   funMod S/L
// value: connFuncRouter
type connSL map[common.FunMode]connFuncRouter

// connTree connector 树状结构
// key:   connector名称
// value: connSL 二级树
type connTree map[string]connSL
